while ((info = children.next_file(null)) != null) {
let type = info.get_file_type();
let child = dir.get_child(info.get_name());
- if (type === Gio.FileType.REGULAR)
+ if (type === Gio.FileType.REGULAR || type === Gio.FileType.SYMBOLIC_LINK)
child.delete(null);
else if (type === Gio.FileType.DIRECTORY)
recursivelyDeleteDir(child, true);
let type = info.get_file_type();
let srcChild = srcDir.get_child(info.get_name());
let destChild = destDir.get_child(info.get_name());
- if (type === Gio.FileType.REGULAR)
+ if (type === Gio.FileType.REGULAR || type === Gio.FileType.SYMBOLIC_LINK)
srcChild.move(destChild, Gio.FileCopyFlags.NONE, null, null);
else if (type === Gio.FileType.DIRECTORY)
recursivelyMoveDir(srcChild, destChild);
expect(() => recursivelyDeleteDir(dir, true)).not.toThrow();
expect(dir.query_exists(null)).toBeFalse();
});
+
+ it('handles symlinks', () => {
+ touchFile(dir, 'file');
+
+ const link = dir.get_child('link');
+ link.make_symbolic_link('file', null);
+
+ expect(() => recursivelyDeleteDir(dir, true)).not.toThrow();
+ expect(dir.query_exists(null)).toBeFalse();
+ });
});
describe('recursivelyMoveDir()', () => {
expect(dstSubdir.query_exists(null)).toBeTrue();
expect(dstSubdir.get_child('file').query_exists(null)).toBeTrue();
});
+
+ it('handles symlinks', () => {
+ touchFile(srcDir, 'file');
+
+ const link = srcDir.get_child('link');
+ link.make_symbolic_link('file', null);
+
+ expect(() => recursivelyMoveDir(srcDir, dstDir)).not.toThrow();
+ expect(dstDir.query_exists(null)).toBeTrue();
+ expect(dstDir.get_child('link').query_exists(null)).toBeTrue();
+ });
});